package design2;

/**
 * 减法算式子类
 */
public class SubstractOperation extends BinaryOperation {
    
    /**
     * 默认构造方法
     */
    public SubstractOperation() {
        super();
        this.operator = '-';
        generateSubstractOperation();
    }
    
    /**
     * 带参数构造方法
     */
    public SubstractOperation(int left, int right) {
        super(left, right, '-');
    }
    
    /**
     * 实现抽象方法 - 计算减法结果
     */
    @Override
    public int calculate() {
        return leftOperand - rightOperand;
    }
    
    /**
     * 实现抽象方法 - 检查减法算式合法性
     */
    @Override
    public boolean checkingCalculation() {
        // 减法算式要求左操作数 >= 右操作数，确保结果非负
        return leftOperand >= rightOperand;
    }
    
    /**
     * 重写生成减法算式方法
     */
    @Override
    protected void generateSubstractOperation() {
        this.leftOperand = random.nextInt(100);
        this.rightOperand = random.nextInt(this.leftOperand + 1);
        this.operator = '-';
    }
}